package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.web.bind.annotation.*;
import org.yaml.snakeyaml.events.Event;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

@RestController
@CrossOrigin    //主要解决跨域问题
@RequestMapping("/axios")

public class AxiosController {
    /**
     * URL：http://localhost:8080/axios/getUserById?id=100
     * 参数   id = 100
     * 返回值：User对象的JSON  伪造一个User对象
     */
    @RequestMapping("/getUserById")
    public User getUserById(Integer id) {
        //根据ID查询数据库
        User user = new User();
        user.setId(id);
        user.setName("好好学习");
        user.setAge(18);
        user.setSex("男");
        return user;
    }

    @RequestMapping("/getUserByNA")
    public List<User> getUserByNA(User user) {
        List<User> list = new ArrayList<>();
        list.add(user); //简化赋值操作    直接返回
        list.add(user);
        return list;
    }

    /**
     * http://localhost:8080/axios/getUserByNS/tomcat/男
     * 参数        name/sex
     * 返回值：List<User>
     */
    @RequestMapping("/getUserByNS/{name}/{sex}")    //调用set方法为属性赋值
    public List<User> getUserByNS(User user) {
        List<User> list = new ArrayList<>();
        list.add(user); //简化赋值操作    直接返回
        list.add(user);
        return list;
    }

    /**
     * URL:http://localhost:8080/axios/saveUser
     * 参数：{id:100,name:"猫",age:2,sex:"雌猫"}  JSON串
     * 返回值："新增成功"
     * 难点：
     *      1.Get请求通过?key=value&key=value
     *      post请求 数据是JSON串  数据的结构不同，所以不能使用User对象接收
     *      2.JSON串转化为User对象
     *          User对象转为JSON串     用@ResponseBody
     *          JSON串转化为User对象   用@RequestBody
     *      3.JSON串转化   要求：JSON串中的属性与对象中的属性一致，
     *      并且赋值时调用对象的set方法
     *      4.@RequestMapping可以支持任意类型的请求，不安全
     *      要求只接收post类型的请求
     *      改进：只能接收固定类型的请求
     *          @PostMapping("/saveUser")   //post请求
     *          @GetMapping                 //get请求
     *           @PutMapping                 //put请求
     *           @DeleteMapping              //delete请求
     *     只有post请求方式才加@RequestBody     JSON串转对象
     *
     * */
    //@RequestMapping(value = "/saveUser",method = RequestMethod.POST)
    @PostMapping("/saveUser")   //post请求
    //@GetMapping                 //get请求
    //@PutMapping                 //put请求
    //@DeleteMapping              //delete请求
    public String saveUser(@RequestBody User user){
        System.out.println(user);
        return "新增用户";
    }
    /**
     * 业务需求：
     * 		完成用户的修改操作，将id=100的数据  name=张三，age=14，sex=女
     * 	URL:http://localhost:8080/axios/updateUser
     * 	返回值：修改成功		数据后端打印
     * */
    @PutMapping("/updateUser")
    public String updateUser(@RequestBody User user){
        System.out.println(user);
        return "修改成功";
    }

}
